package net.xdclass.component;

import net.xdclass.vo.PayInfoVO;

/**
 * @author: wangzhan
 * @Description: 策略上下⽂
 * @date: 2024/9/16 22:08
 **/
public class PayStrategyContext {
    private PayStrategy payStrategy;

    public PayStrategyContext(PayStrategy payStrategy){
        this.payStrategy=payStrategy;
    }

    /**
     * 根据策略对象，执行不同的下单接口
     * @param payInfoVO
     * @return
     */
    public String executeUnifiedOrder(PayInfoVO payInfoVO){
        return payStrategy.unifiedOrder(payInfoVO);
    }

    /**
     * 根据策略对象，执行不同的退款接口
     * @param payInfoVO
     * @return
     */
    public String executeRefund(PayInfoVO payInfoVO){
        return payStrategy.refund(payInfoVO);
    }

    /**
     * 根据策略对象，执行不同的关闭订单接口
     * @param payInfoVO
     * @return
     */
    public String executeCloseOrder(PayInfoVO payInfoVO){
        return payStrategy.closeOrder(payInfoVO);
    }


    /**
     * 根据策略对象，执行不同的查询订单状态订单接口
     * @param payInfoVO
     * @return
     */
    public String executeQueryPayStatus(PayInfoVO payInfoVO){
        return payStrategy.queryPayStatus(payInfoVO);
    }
}
